/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.regulacion.service;

import java.util.List;

import co.gov.medellin.sdep.sisdep.common.dto.GenericComponentVO;
import co.gov.medellin.sdep.sisdep.model.Modulo;
import co.gov.medellin.sdep.sisdep.regulacion.exception.ModuloException;

/**
 * <p>
 * Interface que define todos los servicios necesarios para la gestion de los Modulos asignados a comercientes en SISDEP.
 * </p>
 * <p>
 * Copyright (c) 2012<BR>
 * Consult-Soft S.A.<BR>
 * Created on: May 01, 2012<BR>
 * 
 * @author atabares
 * </p>
 */
public interface IModuloService {

	/**
	 * Inserta un nuevo Modulo de comerciante en SISDEP.
	 * @param newModulo Entidad Modulo que se va a insertar.
	 * @throws ModuloException 
	 */
	void insert(Modulo newModulo) throws ModuloException;

	/**
	 * Actualiza un Modulo de comerciante en SISDEP.
	 * @param newModulo Entidad Modulo que se va a actualizar.
	 * @throws ModuloException
	 */
	void update(Modulo newModulo) throws ModuloException;

	/**
	 * Elimina un Modulo de comerciante en SISDEP.
	 * @param newModulo Entidad Modulo que se va a eliminar.
	 * @throws ModuloException
	 */
	void delete(Modulo newModulo) throws ModuloException;

	/**
	 * Obtiene una lista de Modulo dado los criterios de busqueda pasados como parametro.
	 * @param start 
	 * @param limit 
	 * @param criteria Criterios de consulta de Modulo.
	 * @return Lista con los registros que coinciden con los criterios de busqueda.
	 * @throws ModuloException
	 */
	List load(int start, int limit, Modulo criteria) throws ModuloException;

	/**
	 * Obtiene un Modulo dada su clave primaria.
	 * @param id Clave primaria del registro de Modulo.
	 * @return Modulo que coincide con el id pasado como parametro.
	 * @throws ModuloException
	 */
	Modulo get(long id) throws ModuloException;

	/**
	 * Obtiene una lista de Modulos dados los criterios de busqueda pasados como parametro.
	 * @param criteria Criterios de consulta de Modulo.
	 * @return Lista con los registros que coinciden con los criterios de busqueda.
	 * @throws ModuloException
	 */
	List getModuloListByCriteria(Modulo moduloSearch);
	
	/**
	 * Obtiene un objeto que contiene los disenos configurados que son aplicados a los modulos.
	 * @return Componente que contiene cada uno de los disenos de los modulos.
	 * @throws ModuloException
	 */
	GenericComponentVO getModuloDisenoList();
	
}
